home *** CD-ROM | disk | FTP | other *** search
/ IRIX Base Documentation 2002 November / SGI IRIX Base Documentation 2002 November.iso / usr / share / catman / p_man / cat3 / standard / fixade.z / fixade
Encoding:
Text File  |  2002-10-03  |  6.6 KB  |  126 lines

  1. FIXADE(3)                                              Last changed: 2-2-99
  2.  
  3.  
  4. NNAAMMEE
  5.      ffiixxaaddee - handles and reports on misaligned data bus errors
  6.  
  7. SSYYNNOOPPSSIISS
  8.      ssuubbrroouuttiinnee hhaannddllee__uunnaalliiggnneedd__ttrraappss
  9.      ssuubbrroouuttiinnee lliisstt__bbyy__aaddddrr
  10.      ssuubbrroouuttiinnee ssuummmmaarryy__lliissttiinngg
  11.      ssuubbrroouuttiinnee pprriinntt__uunnaalliiggnneedd__ssuummmmaarryy
  12.  
  13. IIMMPPLLEEMMEENNTTAATTIIOONN
  14.      IRIX systems
  15.  
  16. DDEESSCCRRIIPPTTIIOONN
  17.      ffiixxaaddee is a bus error handler which fields, corrects, and reports bus
  18.      errors arising due to misaligned data in IRIX programs.
  19.  
  20.      For performance reasons, the MIPS architecture is very restrictive
  21.      about the alignment of data which can be used with its standard
  22.      instruction set.  The compilers can usually guarantee this alignment;
  23.      however, some situations arise in which this guarantee cannot be made.
  24.      These misalignments may be necessary to satisfy Fortran equivalence
  25.      statements, due to mismatched formal/actual parameter types, or due to
  26.      user-instructed suppression of common block padding (by using of the
  27.      --aalliiggnn options; see the ff7777(1) man page for details).  If the bus
  28.      error caused by a load or store from a misaligned address is not
  29.      caught, it causes an unexpected program failure.
  30.  
  31.      Routines in the ffiixxaaddee group provide a bus error handler to catch
  32.      these errors, correct them, and allow the program to continue
  33.      execution.  These routines also provide a reporting facility so that
  34.      the causes of these errors can be located and remedied.
  35.  
  36.      None of the routines of ffiixxaaddee have arguments.  The routine
  37.      hhaannddllee__uunnaalliiggnneedd__ttrraappss _m_u_s_t be called to initialize the handler.  If a
  38.      misaligned reference is encountered prior to calling this
  39.      initialization routine, the reference produces a core dump.  No other
  40.      routines of the trap handler may be called prior to calling this
  41.      initialization routine.
  42.  
  43.      No other routines of the trap handler need to be called unless a
  44.      report of misaligned references is needed.  A report of misaligned
  45.      references consists of two portions:
  46.  
  47.      * a summary of the types of misaligned instructions, their counts and
  48.        relative frequency (for example, hhaallff aalliiggnneedd llooaadd--wwoorrdd ooccccuurrrreedd
  49.        ffiifftteeeenn ttiimmeess,, aanndd aaccccoouunntteedd ffoorr 22%% ooff aallll mmiissaalliiggnneedd rreeffeerreenncceess)
  50.  
  51.      * a listing based either on the instruction addresses at which the
  52.        faults occurred, or the data addresses producing the faults.
  53.  
  54.      This listing is either a detailed listing (default), or a summary
  55.      listing.  The summary report lists the address associated with the
  56.      fault (either instruction or data) and its absolute and relative
  57.      frequency, as a percentage.  The detailed report lists all
  58.      instruction/data address pairs producing a fault.  This listing is
  59.      sorted by the address on which the listing is based (for example, by
  60.      instruction address or data address).  By default, the listing is
  61.      detailed.  If  a summary is needed, the ssuummmmaarryy__lliissttiinngg routine must
  62.      be called immediately after the initialization routine.
  63.  
  64.      Also by default, the listing is based on instruction addresses.  To
  65.      sort the listing on data addresses, the lliisstt__bbyy__aaddddrr routine must be
  66.      invoked during initialization.
  67.  
  68.      Prior to program exit, the pprriinntt__uunnaalliiggnneedd__ssuummmmaarryy routine may be
  69.      called to print the listing of bus error events, in either summary or
  70.      detailed format, as described previously.  This listing goes to the
  71.      standard output.
  72.  
  73.      A sample line of this listing in summary format follows:
  74.  
  75.                0x0042445c    1536    33%    67%
  76.  
  77.      00xx00004422444455cc is the address associated with 1536 faults (33% of the
  78.      total).  The final percentage is cumulative.  A printed heading
  79.      indicates if the address is the address of the data causing the fault
  80.      or the instruction at which it occurred.
  81.  
  82.      New options have been added to ff7777(1) to generate (much slower) code
  83.      which tolerates misalignments (see ff7777(1)).  As discussed previously,
  84.      using these options suppresses the padding of common usually done by
  85.      the Fortran compiler to align elements. These options also generate
  86.      code which uses pessimistic code sequences to avoid bus errors due to
  87.      misalignment.  No bus errors due to misaligned data occur in modules
  88.      compiled with these new options.
  89.  
  90.      To find and repair instances of misaligned data, use either
  91.      instruction addresses to decide which modules need to be specially
  92.      compiled (see ff7777(1)), or data addresses to find misalignments.  In
  93.      either case, a symbol table listing produced by nnmm(1), using the --BBggnn
  94.      options, are necessary to map the addresses to routine (or common
  95.      block) names.
  96.  
  97. NNOOTTEESS
  98.      Similar functionality is available from the IRIX kernel by using the
  99.      ssyyssmmiippss(2) call.  This, too, handles the unaligned data traps and
  100.      emulates the memory reference in software but does not generate any
  101.      reports at program termination.
  102.  
  103.      The use of ffiixxaaddee..oo is intended for diagnostic purposes only.  Program
  104.      efficiency may be severely affected by its use.  In addition, programs
  105.      using ffiixxaaddee..oo may fail to work under future releases of the operating
  106.      system or on future processors.
  107.  
  108.      When making a detailed report, the trap handler's tables may overflow.
  109.      If this occurs, the following message is printed at the end of the
  110.      listing:
  111.  
  112.           _n_u_m_b_e_r events not listed due to insufficient table size
  113.  
  114. FFIILLEESS
  115.      //uussrr//lliibb//ffiixxaaddee..oo
  116.      //uussrr//lliibb3322//mmiippss33//ffiixxaaddee..oo
  117.      //uussrr//lliibb3322//mmiippss44//ffiixxaaddee..oo
  118.      //uussrr//lliibb6644//mmiippss33//ffiixxaaddee..oo
  119.      //uussrr//lliibb6644//mmiippss44//ffiixxaaddee..oo
  120.  
  121. SSEEEE AALLSSOO
  122.      ff7777(1)
  123.      ssyyssmmiippss(2)
  124.  
  125.      This man page is available only online.
  126.